JAVA学习IO操作之字节流和字符流(总结分享) |
您所在的位置:网站首页 › 一个输入流的对象用int read返回值 › JAVA学习IO操作之字节流和字符流(总结分享) |
本篇文章给大家带来了关于java的相关知识,其中主要介绍了IO操作的相关问题,包括了字节流和字符流等相关内容,下面一起来看一下,希望对大家有帮助。 推荐学习:《java视频教程》 前言:本章具体介绍了字节流、字符流的基本使用方法,图解穿插代码实现。 IO操作java.io.InputStream 输入流,主要是用来读取文件内容的。 java.io.OutputStream 输出流,主要是用来将内容字节写入文件的。 FileInputStream该流用于从文件读取数据,它的对象可以用关键字 new 来创建。 有多种构造方法可用来创建对象。 可以使用字符串类型的文件名来创建一个输入流对象来读取文件 InputStream f = new FileInputStream("D:/hello");登录后复制也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象: File f = new File("D:/hello");InputStream in = new FileInputStream(f);登录后复制FileOutputStream该类用来创建一个文件并向文件中写数据。 如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。 有两个构造方法可以用来创建 FileOutputStream 对象。 使用字符串类型的文件名来创建一个输出流对象: OutputStream f = new FileOutputStream("D:/hello");登录后复制也可以使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象: File f = new File("D:/hello");OutputStream fOut = new FileOutputStream(f);登录后复制字节流读写案例读取D:/hello.txt文件中的内容再输入到文件D:/test.txt中 public class Mk { public static void main(String[] args) throws IOException { File file=new File("D://hello.txt"); File file1= new File("D://test.txt"); InputStream is=new FileInputStream(file); OutputStream out=new FileOutputStream(file1); //定义byte数组用来暂存数据 byte[] buf = new byte[1024]; //读取Is中的内容存到buf is.read(buf); //将buf中的内容写入out out.write(buf); is.close(); out.close(); } }登录后复制字符流FileWriter写入文件实例 public class A { public static void main(String[] args) throws IOException { FileWriter fw = new FileWriter("user.txt", true); fw.write("你好中国1"); fw.write("你好中国2"); fw.write("你好中国3"); fw.close(); }}登录后复制读取文件实例 这里我把内容换行了 字节流和字符流使用是非常相似的,那么除了操作代码的不同之外,还有哪些不同呢? 字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的 字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容 那开发中究竟用字节流好还是用字符流好呢? 在所有的硬盘上保存文件或进行传输的时候都是以字节的方法进行的,包括图片也是按字节完成,而字符是只有在内存中才会形成的,所以使用字节的操作是最多的。 如果要java程序实现一个拷贝功能,应该选用字节流进行操作(可能拷贝的是图片),并且采用边读边写的方式(节省内存)。 推荐学习:《java视频教程》 以上就是JAVA学习IO操作之字节流和字符流(总结分享)的详细内容,更多请关注php中文网其它相关文章! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |